//关于promise链式编程

var promise01 = new Promise(function (resolve, reject) {

        resolve(1)  //要么只能成功，要么只能失败
   // reject(10)
})


// promise01.then((data)=>{
//     console.log(data)
//     throw new Error(10) //假如回调中发现异常 ， 就会向后冒泡
//     return 100;
//
// }).then((data)=>{
//     console.log(data);//接收上一个回调的参数
//     //假如我们回调的函数有抛出异常呢
//
// }).catch((data)=>{
//
//     console.log(data);//提高冒泡的方法得到primise的异常
// })



// promise01.catch((data)=>{
//
//     console.log(data);//提高冒泡的方法得到primise的异常
// }).then((data)=>{
//     console.log(data)
//     throw new Error(10) //假如回调中发现异常但是又向后冒泡没有catch,
//     //因为catch定义的比较前，只能抓到promise的异常 于是就抛出
//     return 100;
//
// }).then((data)=>{
//     console.log(data);//接收上一个回调的参数
//     //假如我们回调的函数有抛出异常呢
//
// })


promise01.catch((data)=>{

    console.log(data);//提高冒泡的方法得到primise的异常
}).then((data)=>{
    console.log(data)
    throw new Error(10) //假如回调中发现异常但是又向后冒泡没有catch,
    //因为catch定义的比较前，只能抓到promise的异常 于是就抛出
    return 100;

}).then((data)=>{
    console.log(data);//接收上一个回调的参数
    //假如我们回调的函数有抛出异常呢

}).catch((data)=>{
    console.log(data)  //还是冒泡到我们捕获了
})


// 最后一个方法还是会抛出异常 于是js提供了done这个方法

promise01.catch((data)=>{

    console.log(data);//提高冒泡的方法得到primise的异常
}).then((data)=>{
    console.log(data)
    throw new Error(10) //假如回调中发现异常但是又向后冒泡没有catch,
    //因为catch定义的比较前，只能抓到promise的异常 于是就抛出
    return 100;

}).then((data)=>{
    console.log(data);//接收上一个回调的参数
    //假如我们回调的函数有抛出异常呢

}).catch((data)=>{
    console.log(data)  //还是冒泡到我们捕获了
    throw new Error(100)
})
